package com.ssy.lingxi.pay.api.model.vo.request.allInPay;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Positive;
import java.io.Serializable;

/**
 * 消费申请请求实体类
 *
 * @author lqa
 * @version 2.0.0
 * @date 2021/12/4
 */
@Data
public class ConsumeApplyVO implements Serializable {
    private static final long serialVersionUID = -6443405834689564377L;
    /**
     * 会员id(付款方)
     */
    @NotNull(message = "会员id要大于0")
    @Positive(message = "会员id要大于0")
    private Long memberId;

    /**
     * 会员角色id(付款方)
     */
    @NotNull(message = "角色id要大于0")
    @Positive(message = "角色id要大于0")
    private Long memberRoleId;

    /**
     * 会员id(收款方)
     */
    @NotNull(message = "会员id要大于0")
    @Positive(message = "会员id要大于0")
    private Long recieverMemberId;

    /**
     * 会员角色id(收款方)
     */
    @NotNull(message = "角色id要大于0")
    @Positive(message = "角色id要大于0")
    private Long recieverMemberRoleId;
    /**
     * 商户订单号（支付订单）
     */
    @NotBlank(message = "商户订单号不能为空")
    private String bizOrderNo;
    /**
     * 账户集 (平台需自己配置)
     */
    private String AccountSetNo = "200126";

    /**
     * 订单金额 单位：元。包含手续费
     */
    @NotNull(message = "订单金额不能为空")
    private Double amount;

    /**
     * 手续费 内扣，如果不存在，则填 0。 单位：元。 如 amount 为 100，fee 为 2，则充 值实际到账为 98，平台手续费收 入为 2
     */
    private Double fee = 0.00;

    /**
     * 交易验证方式 0-无验证 1-短信验证码 2-支付密码
     * 默认是默认是无验证
     */
    private Integer validateType = 0;

    /**
     * 支付方式 AllInPayPayMethodEnum定义
     */
    @NotBlank(message = "交易支付方式不能为空")
    private String payMethodStr;

    /**
     * 行业代码 AllInPayIndustryEnum定义
     * 默认1910
     * 非必传
     */
    private String industryCode = "1910";

    /**
     * 行业名称
     * 默认 其他
     * 非必传
     */
    private String industryName = "其他";
    /**
     * 扩展参数 接口将原样返回，不可包含“|” 及换行符+，空格，/，?，%，#，&， =等特殊字符，最多 50 个字符
     */
    private String extendInfo;
    /**
     * 用于缓存订单参数的随机字符串
     */
    private String nonce;
    /**
     * 服务类型: serviceTypeEnum类
     */
    @NotNull(message = "服务类型不能为空")
    private String serviceType;

//    /**
//     * 支付类型: 1-平台; 2-会员; (非必填，空值会根据资金归集模式)
//     */
//    private Integer payType;

    /**
     * 支付渠道: 1-平台支付; 2-APP支付 3-小程序;
     * PayChannelEnum.class(如果使用通联余额支付时,此字段无效)
     */
    private Integer payChannel;
    /**
     * 非贷记卡：no_credit
     * 借、贷记卡：””，需要传空字符串，(微信app/小程序 支付宝app支付时用到该字段),余额支付时可以不传
     */
    private String limitPay = "no_credit";
    /**
     * 收银宝子商户号(可以设置多个，业务端根据消费者的ip访问地址识别所在地，调用对应的商户号进行交易)
     */
//    private String vspCusId="553584089129H9W";
    private String vspCusId;

    //----***app微信支付，小程序支付所需字段***————————
    /**
     * 微信端应用 ID：进行微信APP支付,小程序支付时使用
     * 非必传
     */
    private String subAppId;
    /**
     * 支付平台用户标识 (微信小程序支付openid--微信分配),小程序必传
     * 必传
     */
    private String acct;
    //-------***收银宝网关支付时必传***——————————————————————
    /**
     * 该字段可以传 “B2C”,“B2B”,“B2C,B2B”;
     * 收银宝网关支付时必传
     */
    private String allInPayType = "B2C,B2B";
    //-----------***收银宝快捷支付时必传***------------------------
    /**
     * 银行卡号
     * 收银宝快捷支付时必传
     */
    private String bankCardNo;
    /**
     * source 访问终端类型 1-Mobile 2-PC(不影响,所以直接给默认值)
     */
    private Integer source = 2;
    /**
     * 用户下单及调起支付的终端 IP 注：最大长度 16
     * 微信h5支付必传
     */
    private String cusIp="127.0.0.1";

}
